求解器参数
注意: 本主题仅适用于以下 Robotics OLP 产品:
- Visual Components Premium OLP
- Visual Components Professional OLP
- Visual Components Robotics OLP
加工程序和搜索路径求解器

该求解器不仅可在不太改变 TCP 路径的情况下尝试为加工程序和搜索路径找到有效解,还可以更改路径上的外部轴值、机器人配置和 TCP 方向。
为了更好地理解某些规划器参数,有必要了解路径规划算法的工作原理。首先,算法会检查原始路径,如果路径合适,可能根本不需要进行路径规划。以包含 10 个目标点的路径为例,首先,算法会尝试为第一个点随机找到一定数量 (StartCandidatesCount) 的有效位置,即候选位置。
接下来,算法会对下一个点执行同样的操作,尝试为其找到一定数量 (MidCandidatesCount) 的有效候选位置。仅当与前一个点的候选位置建立有效的运动/连接,此候选位置才真正有效。算法会依次处理路径上的每个点,直到为所有点找到有效的候选位置,或者直到路径规划时间用尽。为所有点都找到了有效的候选位置,即视为找到了路径解。从第一个点到最后一个点可能有多种路径选择,算法会根据成本函数参数选择最优路径。
加工程序路径规划的参数位于机器人属性 PathPlanSettings 中,而搜索路径规划的参数位于 SearchPlanSettings 中。这些参数分为常规、运动学、碰撞、采样、成本和优化等类别。
| 参数颜色 |
|
在 GUI 中显示 |
|
高级 GUI |
常规
|
名称 |
默认值 |
单位 |
描述 |
|
ExtSolutionTime |
40.0 |
秒 |
通过特定工具或搜索候选位置求解路径所用的最长时间 |
|
SolveExts |
[-1, 0, 1, 2...] |
为每个路径点求解的外部轴数量。-1 表示 机器人的第 7 个关节 |
|
|
SolveConstExts |
[] |
求解的外部轴数量,必须在整个路径上保持恒定值 |
|
|
PointKindsToRemove |
["Via","Approach", "Departure"] |
从路径中移除的点类型 |
|
|
OverrideValidExts |
false |
即使路径有效,也要找到新解 |
|
|
ToolSolverEnabled |
false |
首先尝试仅使用该工具求解语句 |
|
|
InspectStatuses |
false |
检查之前和之后搜索和焊接路径的状态,以确定是否有必要求解此路径 |
|
|
ExtBigInterpolationStep |
100.0 |
毫米、度 |
首先用来验证路径的较大插值步长 |
|
ExtSmallInterpolationStep |
10.0 |
毫米、度 |
在路径通过 ExtBigInterpolationStep 验证后所使用的较小插值步长 |
|
SearchModes |
["3D.[2in- 1out]","3D.[2in- 1in]","3D.[2out- 1out]","3D.[2out - 1in]","2D.[in]","2 D.[out]"] |
如果搜索为自动生成,并且具有触摸候选位置,则尝试按顺序使用这些搜索模式进行求解 |
|
|
KeepTouchCount |
false |
对搜索进行求解时不更改触摸次数 |
运动学
GUI 中提供“MaxRobotArmReach”的参数、最大 TCP 速度和最小门架速度。
|
名称 |
默认值 |
单位 |
描述 |
|
JointLimits |
[null] |
毫米、度 |
关节范围列表。尝试按顺序使用各个关节范围列表来求解路径。 |
|
NearestJointLimitsFirst |
false |
尝试先使用与原始语句最接近的 JointLimits 中的第一个 关节范围列表 |
|
|
MinStretch |
10.0 |
% |
关节 5 在其操作范围内可以使用的最小距离 |
|
MaxStretch |
90.0 |
% |
关节 5 在其操作范围内可以使用的最大 距离 |
|
WristSingularityTolerance |
1.0 |
度 |
路径中机器人关节 5 的值不能小于此值 |
|
PolarSingularityTolerance |
100.0 |
毫米 |
机器人手腕(关节 5)与机器人关节 1 轴线的 最小距离 |
|
TurnTolerance |
0.0 |
度 |
关节 4 和 6 与转弯限制(180 + n * 360)之间至少应保持这个距离 |
|
JointLimitPadding |
[0.0, 0.0, 0.0…] |
毫米、度 |
关节值与最小值和最大值之间必须至少保持 这些距离 |
|
MaxExtTravelRatio |
10.0 |
外部轴相较 TCP 运动的最大运动长度, D_ext / D_tcp ≤ MaxExtTravelRatio |
|
|
ExtTravelMaxMore |
1000.0 |
毫米、度 |
限制在两个路径点之间外部轴可以比 TCP 多运动的距离, D_ext - D_tcp ≤ ExtTravelMaxMore |
|
ExtTravelMaxLess |
3000.0 |
毫米、度 |
限制外部轴可以比 TCP 少运动的距离(如果 TCP 在两个路径点之间运动距离较长), D_tcp - D_ext ≤ ExtTravelMaxLess |
|
PositionOffsetMaxChange |
[180.0,100.0,10 0.0,10.0] |
毫米、度 |
限制相邻点之间位置偏移的变化 [WireRoll, WireAngle, RakeAngle, StickOut] |
|
OptimalRobotJointRanges |
[] |
首先尝试在这些范围内求解,例如,[[- 1e12,1e12]、[-50.0,30.0]] 可将关节 2 保持在 -50 到 30 的范围内 |
|
|
UseTrackKinematics |
true |
如果为 true,线性门架轴会尝试遵循该路径,从而减少机器人关节的移动 |
|
|
TrackKinMinVia |
200.0 |
使用轨迹运动学进行过孔运动的最小 TCP 运动距离 |
|
|
TrackKinMinProcess |
0.0 |
使用轨迹运动学进行非过孔运动的最小 TCP 运动距离 |
碰撞
|
名称 |
默认值 |
单位 |
描述 |
|
ExtDetectorsEnabled |
true |
碰撞检测已启用 |
|
|
ExtDetectors |
[] |
已弃用。要使用的碰撞检测器名称列表。检测器可在机器人设置中加以定义。 |
|
|
ViaCollisionTolerance |
0.0 |
过孔点的碰撞容差 |
|
|
SearchCollisionTolerances |
[] |
搜索路径的碰撞容差。例如,[20.0,10.0] 表示首次触摸前容差为 20 毫米,第二次触摸前容差为 10 毫米, 之后不允许任何容差 |
采样
GUI 中提供了简化的参数,旨在提高采样的完整性、随机性和速度。
|
名称 |
默认值 |
单位 |
描述 |
|
PositionOffsetRanges |
[null,[50.0,10.0,5.0,0 .0,40.0],[90.0,20.0,1 5.0,0.0,40.0],[180.0, 30.0,40.0,0,40.0]] |
毫米、度 |
位置偏移范围列表。每个列表都包含 WireRoll、WireAngle、RakeAngle、StickOut 和 FlareAngle 的范围。如果未找到有效的候选项,则使用下一个 偏移范围。 |
|
StartEndOffsetLogic |
[0.0,0.0,0.0] |
如果起点/终点的随机喷焊角度超过列表中的第一个值,则该点会沿着焊缝移动,移动距离由列表中的第二个数值(以毫米为单位)来确定,还会添加伸出角度,这个角度由列表中的第三个数值(以度为单位)来确定 |
|
|
PositionOffsetProbs |
[0.4, 0.3] |
第一个 (0.4):使用前一个点解的位置偏移的概率,第二个 (0.3): 使用零位置偏移的概率,其余 (0.3):使用随机位置偏移的概率 |
|
|
ToolTryOrder |
[] |
尝试使用不同工具求解的顺序 |
|
|
ToolParameters |
{} |
工具特定的位置偏移范围列表,例如 {0:{"PositionOffsetRanges":[[50.0,50.0,50.0,0.0],[90.0,90. 0,90.0,0.0],[180.0,180.0,180.0,0.0]]}} |
|
|
RobotConfigOptions |
[] |
列出可能的机器人配置(0 到 7)。如果为空,则表示配置 没有发生变化。 |
|
|
RobotConfigOptimizeTime |
3.0 |
秒 |
在实际求解之前,找到最佳机器人配置所花费的时间 |
|
RejectTimePerPoint |
0.0 |
秒 |
如果大于零,则首先尝试在该时间内为语句的每个点找到有效位置。如果无法为每个点找到有效位置, 则会得出结论,即无法求解。 |
|
ConnectToNearest |
true |
尝试将新的候选位置连接到前一个点的最近候选位置 |
|
|
TryNearOriginal |
false |
如果为 true,则尝试在原始值附近找到有效解。与原始值的可接受距离最初为 ExtSmallMotionLimits,但该距离呈指数 增长 |
|
|
StartCandidatesCount |
20 |
在求解开始阶段为第一个路径点找到的有效候选位置的最大数量 |
|
|
MidCandidatesCount |
20 |
在移动到下一个点之前,为路径上某个点找到的有效候选位置的最大数量 |
|
|
TryFindNextPointsTime |
15.0 |
秒 |
每段运动长度用于查找路径上某点的有效外部轴值的最长时间 |
|
ProbTryPrevPointSolution |
1.0 |
尝试使用前一个点的有效解值而不是随机候选值的概率 |
|
|
MaxConnectionTries |
2 |
将新的候选位置与前一个点连接以确保两点之间的运动也有效的 最大尝试次数 |
|
|
MaxConnectionsFound |
1 |
从当前点的解到前一个点的解之间所找到的最大连接数量 |
成本
目前,通过成本寻找路径效果不佳。我们希望提升规划器的速度,因此通常没有太多路径可供选择。
|
名称 |
默认值 |
单位 |
描述 |
|
RobotJointCosts |
[5.0,3.0,3.0,0.0 ,0.0...] |
机器人自身轴运动的成本系数 |
|
|
ExtJointCosts |
[1.0, 1.0...] |
外部轴运动的成本系数 |
|
|
ExtSmallMotionLimits |
[20.0, 20.0...] |
毫米、度 |
在外部轴运动的情况下用于成本计算的轴运动最小值 |
|
SmallStretchLimit |
30.0 |
% |
短距离拉伸的额外成本阈值 |
|
BigStretchLimit |
75.0 |
% |
长距离拉伸的额外成本阈值 |
|
SmallStretchCost |
200.0 |
拉伸距离小于 SmallStretchLimit 时的额外成本系数 |
|
|
BigStretchCost |
200.0 |
拉伸距离大于 BigStretchLimit 时的额外成本系数 |
|
|
PositionOffsetCosts |
[10.0,40.0,40.0 ,200.0] |
使用位置偏移 WireRoll、WireAngle、RakeAngle 和 StickOut 的成本系数 |
优化
|
名称 |
默认值 |
单位 |
描述 |
|
PositionOffsetSmoothTolerances |
[2.0, 1.0, 1.0, 0.2] |
为继续保持此平滑过程,位置偏移 [WireRoll, WireAngle, RakeAngle, StickOut] 必须改变的程度。改变得越小越好,但会花费 更多时间。 |
|
|
PositionOffsetToZeroSteps |
[0.0, 10.0, 10.0, 1.0] |
如果大于零,则这是将位置偏移 [WireRoll, WireAngle, RakeAngle, StickOut] 设置为接近零的初始步长。实际步长至少是此步长的 四分之一 |
|
|
ExtSmoothTolerance |
10.0 |
为继续保持此平滑过程,外部轴值必须改变的程度 |
|
|
ExtSmoothMaxTime |
20.0 |
平滑求解路径所用的 最长时间 |
过孔路径求解器
过孔路径求解器可在加工程序、搜索、过孔和 PTP 等语句之间寻找路径。值得注意的是,目前尚未为线性运动语句定义转弯和机器人配置,因此暂不支持该语句。
过孔路径规划器会在起始位置和目标位置附近寻找随机有效状态,当这些新状态连接到附近的其他状态时,就会形成两个树结构:一个靠近起始位置,一个靠近目标位置。如果能找到两个树结构之间的连接,就可以形成初步的过孔路径解。要想优化此解,可跳过路径上不必要的状态,或者对运动进行平滑处理。
过孔路径规划器的参数可在机器人属性 ViaPlannerSettings 中定义。如需详细了解这些参数,请参阅常规、运动学、碰撞、采样和过孔路径等章节。可以利用机器人属性 SafeStates 定义其他安全状态,以加快路径查找过程并找到更佳路径。有关机器人安全状态的定义,详见安全状态定义一章。
常规
|
名称 |
默认值 |
单位 |
描述 |
|
MaxPlanTime |
120.0 |
秒 |
查找过孔路径所用的最长时间 |
|
InterpStepSize |
10.0 |
毫米、度 |
用于检查不同点之间运动的插值步长 |
|
InspectStatuses |
false |
检查之前和之后搜索和焊接路径的状态,以确定是否有必要求解此路径 |
|
|
MaxTries |
1 |
求解器从头开始尝试求解的次数 |
运动学
|
名称 |
默认值 |
单位 |
描述 |
|
JointLimitPadding |
[0.0, 0.0, 0.0…] |
毫米、度 |
关节值与最小值和最大值之间必须至少保持这些距离 |
|
MinStretch |
10.0 |
% |
关节 5 在其操作范围内可以使用的最小距离 |
|
MaxStretch |
99.0 |
% |
关节 5 在其操作范围内可以使用的最大 距离 |
|
PolarSingularityTolerance |
50.0 |
毫米 |
机器人手腕(关节 5)与机器人关节 1 轴线的最小距离 |
|
WristSingularityTolerance |
1.0 |
度 |
路径中机器人关节 5 的值不能小于此值 |
|
TurnTolerance |
0.0 |
度 |
关节 4 和 6 与转弯限制(180 + n * 360)之间至少 应保持这个距离 |
碰撞
|
名称 |
默认值 |
单位 |
描述 |
|
CollisionTolerances |
[0.0] |
毫米 |
碰撞容差列表。第一个容差用于起点和目标点,第二个容差用于起点或目标点的下一个点,依此类推。 |
|
SearchCollTolStartInd |
0 |
如果目标语句是“搜索”,则 CollisionTolerances 中使用的第一个碰撞容差可以不是 0 |
采样
GUI 中提供通用参数,可用于调整贪婪度和采样密度。
|
名称 |
默认值 |
单位 |
描述 |
|
MotionLimits |
[100.0, 30.0, 10.0, 100.0] |
毫米、度 |
限制起点和目标点周围的最大运动长度。列表中包含对 TCP 位置、TCP 旋转、机器人额外轴和门架轴的 限制条件 |
|
SamplingRange |
[1000.0, 2000.0] |
毫米 |
起点和终点周围采样区域的大小。包含对 TCP 位置和门架关节的限制条件。 |
|
NeighborCount |
5 |
将新的采样位置连接到最近状态的尝试次数 |
|
|
ProbTryConnectTrees |
1.0 |
尝试连接起点和目标状态树的概率 |
|
|
MaxTreeConnectTries |
5 |
将一个状态连接到另一棵树中的状态的尝试次数 |
|
|
MaxTreeConnectDist |
2000.0 |
毫米 |
如果状态与另一棵树的状态的距离超过此值,则不会尝试连接这两个状态 |
|
ProbOppositeSample |
0.25 |
采样状态位于另一棵树附近的概率。这有助于两棵树相向生长。 |
|
|
ProbTryLeap |
0.2 |
创建采样状态的概率,该状态的外部轴值来自另一棵树的状态。会尝试直接连接, MotionLimits 不会影响跳跃状态。 |
安全状态
|
名称 |
默认值 |
单位 |
描述 |
|
NormalSafeStatesEnabled |
true |
路径解中使用正常的安全状态 |
|
|
FindSafeStatePathMaxTime |
60.0 |
秒 |
在起点和目标安全状态之间寻找路径所花费的最长时间。 |
|
TryWithoutSafeStatesDistance |
1000.0 |
毫米、度 |
如果起点和目标点的距离小于此值,则首先尝试在没有安全状态的情况下求解。 |
|
TryWithoutSafeStatesMaxTime |
60.0 |
秒 |
一开始在没有安全状态的情况下尝试求解的最长时间。 |
优化
|
名称 |
默认 |
单位 |
描述 |
|
MaxSkipStatesTim e |
60.0 |
秒 |
用于路径优化的最长时间。 |
|
MaxFailedSkips |
100 |
如果状态跳过连续失败次数超过此值,则将停止状态跳过算法。 |
|
|
MaxStatesToSkip |
5 |
算法尝试一次跳过的最大路径点数量。 |
|
|
MinSmoothDist |
100.0 |
毫米 |
仅在平滑运动的长度至少达到此值时才对拐角进行平滑处理 |
|
SkipSafeStates |
false |
用于指定算法能否跳过安全状态。 |
过孔路径
|
名称 |
默认值 |
单位 |
描述 |
|
JointMotionSpeed |
50.0 |
% |
设为求解路径的关节运动速度 |
|
LinearMotionSpeed |
500.0 |
毫米/秒 |
设为求解路径的线性运动速度 |
|
NearMotionSpeed |
100.0 |
毫米/秒 |
求解路径上最后一个点的线性运动速度 |
|
JointMotionsOnly |
false |
仅使用关节运动。如果为 false,则首选线性运动。 |
|
|
MaxLinearMotionRotation |
0.0 |
度 |
线性运动过程中 TCP 的最大旋转角度。如果超过此值,则会添加 更多点。 |
安全状态定义
机器人的 SafeStates 属性仅包含两个参数,如下表所示。
|
名称 |
默认值 |
单位 |
描述 |
|
UltraExtRanges |
[] |
毫米、 度 |
外部轴区域列表,其中机器人关节 1 具有更大空间进行大幅运动。例如,[[[- 1e12,1e12],[-0.5,0.5]]] 定义了一个区域,其中第一个外部轴可以是任何值,而第二个 外部轴必须介于 -0.5 和 0.5 之间 |
|
JointDistFactors |
[1.0,1.0,0.0,0.0… ] |
计算最近安全状态时关节索引的距离系数 |
|
|
SafeStateSearchStep |
50.0 |
毫米、 度 |
SolveJoints 寻找有效安全状态所用的 步长 |
|
SafeStateSearchRange |
500.0 |
毫米、 度 |
SolveJoints 寻找有效安全状态时所允许的最大 变化量 |
|
States |
[] |
安全状态定义列表 |
应针对每种安全状态定义以下参数:
|
名称 |
默认值 |
单位 |
描述 |
|
Name |
"" |
安全状态的名称。对功能没有影响。 |
|
|
RobotConfig |
0 |
机器人手臂的配置(0 到 7) |
|
|
RobotJoints |
[0.0, 0.0, ...] |
毫米、度 |
安全状态下的所有关节值,包括外部轴。 |
|
SolveJoints |
[] |
关节索引,可能需要稍微不同的值才能获得有效安全状态。 |
|
|
Level |
1 |
状态的安全级别。0 表示正常,1 表示超级安全 |
|
|
InheritJointInds |
[6, 7, …] |
在机器人附近形成安全状态时从机器人状态中复制的关节值。默认情况下,所有外部轴的值都复制自原始状态,进而形成安全状态。 |